package com.smiletrain.activities;

import com.smiletrain.R;
import com.smiletrain.activities.base.AbstractActivity;
import com.smiletrain.util.AdminCasos;
import com.smiletrain.util.Constantes;
import com.smiletrain.view.ItemList;
import com.smiletrain.view.ListaIntervencion;

import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.AdapterView;
import android.widget.ImageView;
import android.widget.ListView;
import android.widget.AdapterView.OnItemClickListener;

public class TipoActivity extends AbstractActivity {
	/**
	 * @see android.app.Activity#onCreate(Bundle)
	 */
	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.tipo_view);
		super.setFootLayout();
		
        ListView listView = (ListView) findViewById(R.id.listView1);
        
        String inter = caso.getIntervencionNumerica();
        
        values = new ItemList[] { 
        		new ItemList(Constantes.TIPO_INTERVENCION.get(Constantes.TIPO_INT_01), 
        				inter.contains(Constantes.TIPO_INT_01)),
				new ItemList(Constantes.TIPO_INTERVENCION.get(Constantes.TIPO_INT_02), 
						inter.contains(Constantes.TIPO_INT_02)),
				new ItemList(Constantes.TIPO_INTERVENCION.get(Constantes.TIPO_INT_03), 
						inter.contains(Constantes.TIPO_INT_03)),
				new ItemList(Constantes.TIPO_INTERVENCION.get(Constantes.TIPO_INT_04), 
						inter.contains(Constantes.TIPO_INT_04)),
				new ItemList(Constantes.TIPO_INTERVENCION.get(Constantes.TIPO_INT_05), 
						inter.contains(Constantes.TIPO_INT_05)),
				new ItemList(Constantes.TIPO_INTERVENCION.get(Constantes.TIPO_INT_06), 
						inter.contains(Constantes.TIPO_INT_06)),
				new ItemList(Constantes.TIPO_INTERVENCION.get(Constantes.TIPO_INT_07), 
						inter.contains(Constantes.TIPO_INT_07))
        		};
        
        selected = new boolean[values.length];
        int ix = 0;
        for(ItemList  i : values)
        	selected[ix++] = i.isSelected();

        listView.setAdapter(new ListaIntervencion(values));
        
        listView.setOnItemClickListener(new OnItemClickListener() {
        	
            @Override
            public void onItemClick(AdapterView<?> parent, View view, int position,
                    long id) {

            	if(values[position].isSelected()){
            		values[position].changeState();
            		selected[position] = values[position].isSelected();
            	}else if(cambioValido(position)){
            		values[position].changeState();
            		selected[position] = values[position].isSelected();
            	}

            }
            
        });
        
        ImageView siguiente = (ImageView) findViewById(R.id.bSiguiente);
        
        siguiente.setOnClickListener(new OnClickListener() {
        	
			@Override
			public void onClick(View v) {

				updateCaso();
				
				if(AdminCasos.validarTipoIntervencion(caso, TipoActivity.this)){
					Intent intent = new Intent(TipoActivity.this, PacienteActivity.class);
					startActivity(intent);
				}
				
			}
			
		});
        
	}
	
	@Override
	public void updateCaso() {
		if(selected[3] || selected[4] || selected[5] || selected[6])
			caso.setNumFotografias(2);
		else
			caso.setNumFotografias(1);
		
		String inter = "";
		for(int i = 0 ; i < selected.length ; i++)
			if(selected[i]) {
				inter += i + ",";
			}
		caso.setIntervencionNumerica(inter);
	}
	
	protected int numSelected() {
		int cuantosSelected = 0;
		for(boolean b : selected)
			if(b) cuantosSelected++;
		return cuantosSelected;
	}

	protected boolean cambioValido(int position) {
		
		int cuantosSelected = numSelected();
		
		if(cuantosSelected > 0){
			
			if(cuantosSelected >= 3)
				return false;
			
			switch(position){
				case 0:
					if(!selected[1] && !selected[2]) 
						return true;
					break;
				case 1:
					if(!selected[0] && !selected[2]) 
						return true;
					break;
				case 2: 
					if(!selected[0] && !selected[1]) 
						return true;
					break;
				case 3: 
					if(!selected[4]) 
						return true;
					break;
				case 4: 
					if(!selected[3]) 
						return true;
					break;
				case 5: 
					return true;
				case 6:
					return true;
			}
		} else 
			return true;
		
		return false;
	}

	private ItemList[] values;
	private boolean[] selected;
	
}
